import { defineStore } from 'pinia'
import {loginUser} from '@/api/user'

// 第一个参数，存储的id
export const useUsersStore = defineStore('users',{
	// 具体数据
	// state => 要存储的数据
	state:() => {
		return {
			name: "",
			age: 0,
			token:""
		}
	},
	// getters => 获取复杂的数据时, 定义了一些函数
	getters: {
		// number => 函数返回值(必加) , this表示的当前的存储
		// 给函数加参数时，stat会传递进去
		getAge(): number {
			return this.age+100
		},
		getAge2: (state) => {
		    return state.age + 100
		}
		// error 
		// getAge2: () => {
		//       return this.age + 100
		// }
	},
	// actions => 复杂的写数据操作
	actions: {
		saveName(name){
			this.name = name
		},
		saveToken(name){
			this.token = name
		},
		loginUser(data){
			// 发起请求
			console.log("store login 发起请求:", data)
			//让api/user下的login发起请求
			return new Promise((resolve)=>{
				loginUser(data)
				.then(res=>{
					// localStorage.setItem("username1",res.data.username)
					//存储token
					// console.log("存储token",res)
					if(res.code == 0){
											this.saveName(res.data.username)
											this.saveToken(res.data.token)
											resolve(res)
										}
				})
			})
		}
	},
	// 持久化存储插件，开启数据缓存
	persist: {
		enabled: true,
		strategies: [
			{
				key: 's_user',
				storage: localStorage,
			}
		]
	}
})